package com.fintech.third.service.moxie;

import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;

import java.util.List;

import com.fintech.third.model.moxie.fund.BillRecord;
import com.fintech.third.model.moxie.fund.LoanInfo;
import com.fintech.third.model.moxie.fund.LoanRepayRecord;
import com.fintech.third.model.moxie.fund.UserFundRecord;
import com.fintech.third.model.moxie.fund.UserInfo;
import com.fintech.third.service.moxie.task.TaskCreateReq;
import com.fintech.third.service.moxie.task.TaskCreateRsp;
import com.fintech.third.service.moxie.task.TaskStatusRsp;
import com.fintech.third.service.moxie.task.TaskVoidRsp;
import com.fintech.third.service.moxie.task.UserInput;

/**
 * 住房公积金
 */
public interface FundApi {
	
    /**
     * 查找城市列表
     *
     * @param req
     * @return
     */
    @GET("/fund/v2/city-list")
    Call<Object> getCityData();
	
    /**
     * 创建任务
     *
     * @param req
     * @return
     */
    @POST("/fund/v2/tasks")
    Call<TaskCreateRsp> createTask(@Body TaskCreateReq req);

    /**
     * 查询任务状态
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/tasks/{taskid}/status")
    Call<TaskStatusRsp> getTaskStatus(@Path("taskid") String taskId);

    /**
     * 输入验证码
     *
     * @param taskId
     * @param req
     * @return
     */
    @POST("/fund/v2/tasks/{taskid}/input")
    Call<TaskVoidRsp> input(@Path("taskid") String taskId, @Body UserInput req);


    /**
     * 获取公积金全部信息
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/funds/{taskid}")
    Call<UserFundRecord> getFund(@Path("taskid") String taskId);

    /**
     * 获取公积金基本信息
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/funds/{taskid}/base")
    Call<UserInfo> getFundBase(@Path("taskid") String taskId);

    /**
     * 获取账单信息
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/funds/{taskid}/bill")
    Call<List<BillRecord>> getFundBill(@Path("taskid") String taskId);


    /**
     * 获取贷款信息
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/funds/{taskid}/loan")
    Call<List<LoanInfo>> getFundLoan(@Path("taskid") String taskId);

    /**
     * 获取还款信息
     *
     * @param taskId
     * @return
     */
    @GET("/fund/v2/funds/{taskid}/loan-repay")
    Call<List<LoanRepayRecord>> getFundLoanRepayRecord(@Path("taskid") String taskId);

}
